﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace businessLayer
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "MedewerkersService" in code, svc and config file together.
    // NOTE: In order to launch WCF Test Client for testing this service, please select MedewerkersService.svc or MedewerkersService.svc.cs at the Solution Explorer and start debugging.
    public class MedewerkersService : IMedewerkers
    {
        public List<Medewerkers> GetAlleMedewerkers()
        {
            List<Medewerkers> Medewerkerslijst = new List<Medewerkers>();
            SqlConnection myConn = null;
            Medewerkers alle = new Medewerkers();
            try
            {
                using (myConn = new SqlConnection(BPcars.GetConnection()))
                {
                    myConn.Open();

                    var cmd = new SqlCommand("Select * from Medewerkers", myConn);
                    var reader = cmd.ExecuteReader();



                    while (reader.Read())
                    {
                        int medewerkersNr = Convert.ToInt32(reader["medewerkersnr"]);
                        string naam = Convert.ToString(reader["naam"]);
                        string voornaam = Convert.ToString(reader["voornaam"]);
                        string adres = Convert.ToString(reader["adres"]);
                        string postcode = Convert.ToString(reader["postcode"]);
                        string telefoon = Convert.ToString(reader["telefoon"]);
                        string email = Convert.ToString(reader["email"]);
                        int filiaalNr = Convert.ToInt32(reader["filiaalnr"]);
                        DateTime inDienst = (DateTime)reader["inDienst"];
                        string password = Convert.ToString(reader["password"]);

                        Medewerkers v = new Medewerkers { medewerkersNr = medewerkersNr, naam = naam, voornaam = voornaam, adres = adres, postcode = postcode, telefoon = telefoon, email = email,  filiaalNr = filiaalNr, inDienst = inDienst, password = password };
                        Medewerkerslijst.Add(v);

                    }

                    reader.Close();
                    cmd.Dispose();




                }
            }
            catch (SqlException ex)
            {
                throw;
            }
            return Medewerkerslijst;
        }

        public List<Medewerkers> GetAlleMedewerkersFiliaal(int Filiaalid)
        {
            List<Medewerkers> Medewerkerslijst = new List<Medewerkers>();
            SqlConnection myConn = null;
            Medewerkers alle = new Medewerkers();
            try
            {
                using (myConn = new SqlConnection(BPcars.GetConnection()))
                {
                    myConn.Open();

                    var cmd = new SqlCommand("Select * from Medewerkers where filiaalnr="+Filiaalid, myConn);
                    var reader = cmd.ExecuteReader();



                    while (reader.Read())
                    {
                        int medewerkersNr = Convert.ToInt32(reader["medewerkersnr"]);
                        string naam = Convert.ToString(reader["naam"]);
                        string voornaam = Convert.ToString(reader["voornaam"]);
                        string adres = Convert.ToString(reader["adres"]);
                        string postcode = Convert.ToString(reader["postcode"]);
                        string telefoon = Convert.ToString(reader["telefoon"]);
                        string email = Convert.ToString(reader["email"]);
                        int filiaalnr = Convert.ToInt32(reader["filiaalnr"]);
                        DateTime inDienst = (DateTime)reader["inDienst"];
                        string password = Convert.ToString(reader["password"]);

                        Medewerkers v = new Medewerkers { medewerkersNr = medewerkersNr, naam = naam, voornaam = voornaam, adres = adres, postcode = postcode, telefoon = telefoon, email = email, filiaalNr = filiaalnr, inDienst = inDienst, password = password };
                        Medewerkerslijst.Add(v);

                    }

                    reader.Close();
                    cmd.Dispose();




                }
            }
            catch (SqlException ex)
            {
                throw;
            }
            return Medewerkerslijst;
        }

        public bool updateMedewerkers(Medewerkers TeWijzigenMedewerkers)
        {

            SqlConnection myConn = null;

            try
            {
                using (myConn = new SqlConnection(BPcars.GetConnection()))
                {
                    myConn.Open();
                    
                    // var cmd = new SqlCommand("update table Voertuig where Voertuigid = "+ voertuigNummer , myConn);
                    string update = "UPDATE Medewerkers SET " +
                            "medewerkersnr = @medewerkersnr, " +
                             "naam = @naam, " +
                            "voornaam = @voornaam, " +
                            "adres = @adres, " +
                            "postcode = @postcode " +
                            "telefoon = @telefoon " +
                            "email = @email" +
                            "filiaalnr = @filiaalnr, " +
                            "inDienst = @inDienst, " +
                            "password = @password, " +
                            "WHERE medewerkersnr = @Oldmedewerkersnr ";
                    SqlCommand updateCommand = new SqlCommand(update, myConn);

                    var cmd = new SqlCommand(update);
                    cmd.Parameters.AddWithValue("@medewerkersnr", TeWijzigenMedewerkers.medewerkersNr);
                    cmd.Parameters.AddWithValue("@naam", TeWijzigenMedewerkers.naam);
                    cmd.Parameters.AddWithValue("@voornaam", TeWijzigenMedewerkers.voornaam);
                    cmd.Parameters.AddWithValue("@adres", TeWijzigenMedewerkers.adres);
                    cmd.Parameters.AddWithValue("@postcode", TeWijzigenMedewerkers.postcode);
                    cmd.Parameters.AddWithValue("@telefoon", TeWijzigenMedewerkers.telefoon);
                    cmd.Parameters.AddWithValue("@email", TeWijzigenMedewerkers.email);
                    cmd.Parameters.AddWithValue("@filiaalnr", TeWijzigenMedewerkers.filiaalNr);
                    cmd.ExecuteNonQuery();
                    cmd.Dispose();




                }
            }

            catch (SqlException ex)
            {
                throw;
            }
            return true;
            //return VoertuigenLijst;
        }
    }
}
